package q452_findMinArrowShots;

import java.util.Arrays;
import java.util.Comparator;

public class Solution {
    public int findMinArrowShots(int[][] points) {
        // 注意要先按气球起点排序
        Arrays.sort(points, Comparator.comparingInt(p -> p[0]));

        int ans = points.length;

        for (int i = 1; i < points.length; i++) {
//            if (points[i][0] <= mark) {
//                ans--;
//            }else {
//                mark = points[i][1];
//            }
            // 从前向后遍历遇到重叠的⽓球了怎么办？
            // 如果⽓球重叠了，重叠⽓球中右边边界的最⼩值 之前的区间⼀定需要⼀个⼸箭
            if (points[i][0] > points[i - 1][1]) {
                // 这里为了方便理解 使用了一个空体
            }else {
                ans--;
                points[i][1] = Math.min(points[i - 1][1], points[i][1]);
            }

            // 实际上也可以将ans初始化为1
            // 然后将ans++放入第一个判断中
        }

        return ans;
    }
}
